﻿//@模块名称 OP插件0450
//@版本 3.0
//@日期 2024-11-07
//@作者 菜鸟
//@QQ 84002751
//@模块备注 必须设置<发布版>才可用,为便于炫语言调用,采用炫语言封装以匹配数据类型
//模块3.0更新说明:
//   ● 取消了原英文原版模块依赖
//   ● 函数名搞定了别名,采用 - 分组名_中文名+原版英文名封装,现已全面支持中/英文函数名2种输入方式
//   ● 炫彩基础模块已支持long类型，取消各种数据类型转换匹配，更接近原生调用以减少不必要的BUG
//官方文档地址：https://github.com/WallBreaker2/op/wiki
//接口按官方文档,有全局|绑定|窗口|鼠标|键盘|Ocr|图色|算法|内存|系统
//函数说明文档可参考大漠插件,基本一致
//封装自开源OP项目(https://gitee.com/wallbreaker2/op) 本人水平有限有BUG勿怪
// OP(operator & open)是一个开源插件(类似大漠插件).主要功能有:Windows消息模拟,后台截图，找图,字符识别(OCR)等。
// 使用c++编写，可支持32/64位调用，大漠仅支持32位
// 字符识别(OCR)需要相应插件,模块未包含,需另行下载
//   ● 可自行前往https://github.com/WallBreaker2/op下载
//   ● 或链接：https://share.weiyun.com/I4ElHNIG 密码：xcgui6
//   ● X64下载文件解压后可直接使用,模块示例已有相关代码,X86需自行安装tesseract
//   ● 放到程序根目录即可
// --0.4.5.0新增功能
//   ● 支持 keypad normal.hd 模式
//   ● 支持 display normal.gxgi 和 normal.wgc 模式
//   ● 后台绑定支持 d3d12 模式
//   ● Ocr引擎支持 paddleocr，32 位默认使用 tesseract，64 位默认使用 paddleocr
//   ● 新增 SetClipboard、GetClipboard 接口
//   ● 新增 Delay、Delays、GetBindWindow、IsBind、SetMouseDelay、SetKeypadDelay 接口
// 
//说明：本模块只用作技术研究，不针对任何使用场景，用本模块制作的任何软件和本人无关，请遵守OP项目原版相关声明。 
//@依赖 "module_base.h"

//32位文件:
//@lib "op_x86.lib"
//@复制文件 @当前模块路径 "op_x86.dll"

//64位文件:
//@lib64 "op_x64.lib"
//@复制文件64 @当前模块路径 "op_x64.dll"

#头文件 "libop.h"
#嵌入行 using std::wstring;
#外部类型 wstring
#外部类型 size_t
#外部类型 long
#外部宏 PROCESS_ALL_ACCESS

//@备注 使用前必须先实例化对象 例 OP对象类 op
类 OP对象类
	私有
	libop m_op

	公开
	//@备注 获取当前 op 插件的版本号
	//@返回 返回 op 插件的版本号
	函数 文本型 全局_取版本号() : Ver
		文本型 ver
		#嵌入行 ver = (CXText)m_op.Ver();
		返回 ver

	//@备注 设置全局路径,设置了此路径后,所有接口调用中相关的文件都相对于此路径. 比如图片,字库等
	//@参数 指定的路径
	//@返回 0:失败,1:成功
	函数 long 全局_置全局路径(禁引用 文本型 参_路径) : SetPath
		long 局_返回值 = 0
		#嵌入行 m_op.SetPath(参_路径.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 获取全局路径
	//@返回 返回当前设置的全局路径
	函数 文本型 全局_取全局路径() : GetPath
		wstring 局_返回值
		#嵌入行 m_op.GetPath(局_返回值);
		返回 (文本型)局_返回值

	//@备注 获取插件目录
	//@返回 返回当前插件所在路径
	函数 文本型 全局_取插件目录() : GetBasePath
		wstring 局_返回值
		#嵌入行 m_op.GetBasePath(局_返回值);
		返回 (文本型)局_返回值

	//@备注 返回当前对象的 ID 值，这个值对于每个对象是唯一存在的。可以用来判定两个对象是否一致
	//@返回 当前对象的 ID 值
	函数 long 全局_取对象ID() : GetID
		long 局_返回值
		#嵌入行 m_op.GetID(&局_返回值);
		返回 局_返回值

	//@备注 获取最后的错误编号
	//@返回 0:表示无错误
	函数 long 全局_取最后错误编号() : GetLastError
		long 局_返回值
		#嵌入行 m_op.GetLastError(&局_返回值);
		返回 局_返回值

	//@备注 设置是否弹出错误信息
	//@参数 默认打开,0:关闭，1:显示为信息框，2:保存到文件,3:输出到标准输出
	//@返回 0:失败,1:成功
	函数 long 全局_弹出错误信息(long 参_显示类型) : SetShowErrorMsg
		long 局_返回值 = 0
		#嵌入行 m_op.SetShowErrorMsg(参_显示类型, &局_返回值);
		返回 局_返回值

	//@备注 设置休眠时间
	//@参数 休眠时间(毫秒)
	//@返回 0:失败,1:成功
	函数 long 全局_休眠(long 参_延时) : Sleep
		long 局_返回值 = 0
		#嵌入行 m_op.Sleep(参_延时, &局_返回值);
		返回 局_返回值

	//@备注 将指定的 DLL 注入到指定的进程中
	//@参数 指定要注入DLL的进程名称
	//@参数 注入的DLL名称
	//@返回 0:失败,1:成功
	函数 long 全局_DLL注入(禁引用 文本型 参_进程名称, 禁引用 文本型 参_dll名称) : InjectDll
		long 局_返回值 = 0
		#嵌入行 m_op.InjectDll(参_进程名称.getPtr(), 参_dll名称.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 设置是否开启或者关闭插件内部的图片缓存机制
	//@参数 0:关闭,1:打开
	//@返回 0:失败,1:成功
	函数 long 全局_置图片缓存机制(long 参_标志) : EnablePicCache
		long 局_返回值 = 0
		#嵌入行 m_op.EnablePicCache(参_标志, &局_返回值);
		返回 局_返回值

	//@备注 取上次操作的图色区域，保存为 file(24 位位图),例:op.CapturePre("screen.bmp")
	//@参数 设置保存文件名,保存路径是SetPath设置的目录，也可以指定全路径
	//@返回 0:失败,1:成功
	函数 long 全局_上次操作的图色区域保存到文件(禁引用 文本型 参_文件名) : CapturePre
		long 局_返回值 = 0
		#嵌入行 m_op.CapturePre(参_文件名.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 设置屏幕数据模式
	//@参数 0:从上到下(默认),1:从下到上
	//@返回 0:失败,1:成功
	函数 long 全局_置屏幕数据模式(long 参_模式) : SetScreenDataMode
		long 局_返回值 = 0
		#嵌入行 m_op.SetScreenDataMode(参_模式, &局_返回值);
		返回 局_返回值

	//@备注 根据A星算法,获取地图上从源坐标到目的坐标的一条最短路径,例 op.AStarFindPath(10,10,"1,0|1,1|1,2|1,3",0,0,9,9)
	//@参数 文档写的区域的左上X坐标,但盲猜应该是地图宽度
	//@参数 文档写的区域的左上Y坐标,但盲猜应该是地图高度
	//@参数 不可通行的坐标,以"|"分割,例如:"10,15|20,30"
	//@参数 源坐标X
	//@参数 源坐标Y
	//@参数 目的坐标X
	//@参数 目的坐标Y
	//@返回 找到的路径结果
	函数 文本型 算法_A星寻路(long 参_地图宽度, long 参_地图高度, 禁引用 文本型 参_排除坐标集, long 参_起点X, long 参_起点Y, long 参_终点X, long 参_终点Y) : AStarFindPath
		wstring 局_返回值
		#嵌入行 m_op.AStarFindPath(参_地图宽度, 参_地图高度, 参_排除坐标集.getPtr(), 参_起点X, 参_起点Y, 参_终点X, 参_终点Y, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 在一组坐标中查找最近的坐标
	//@参数 坐标描述串
	//@参数 返回值类型,可参考大漠插件文档或自行测试
	//@参数 坐标x
	//@参数 坐标y
	//@返回 返回的格式和类型有关,详情可参考大漠插件文档
	函数 文本型 算法_找最近坐标(禁引用 文本型 参_坐标集, long 参_返回值类型, long 参_X, long 参_Y) : FindNearestPos
		wstring 局_返回值
		#嵌入行 m_op.FindNearestPos(参_坐标集.getPtr(), 参_返回值类型, 参_X, 参_Y, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 根据指定条件,枚举系统中符合条件的窗口
	//@参数 父窗口的句柄
	//@参数 窗口的标题
	//@参数 窗口的类名
	//@参数 需匹配类型,值相加,1.窗口标题,2.窗口类名,4.指定父窗口的第一层子窗口,8.所有者窗口为0的窗口，即顶级窗口,16.可见的窗口,32.返回结果按照窗口打开顺序依次排列
	//@返回 返回所有匹配到的窗口句柄
	函数 文本型 窗口_枚举句柄(long 参_父窗口句柄, 禁引用 文本型 参_标题, 禁引用 文本型 参_类名, long 参_匹配类型) : EnumWindow
		wstring 局_返回值
		#嵌入行 m_op.EnumWindow(参_父窗口句柄, 参_标题.getPtr(), 参_类名.getPtr(), 参_匹配类型, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 根据指定进程以及其它条件,枚举系统中符合条件的窗口
	//@参数 进程名称
	//@参数 窗口的标题
	//@参数 窗口的类名
	//@参数 需匹配类型,值相加,1.窗口标题,2.窗口类名,4.指定父窗口的第一层子窗口,8.所有者窗口为0的窗口，即顶级窗口,16.可见的窗口,32.返回结果按照窗口打开顺序依次排列
	//@返回 返回所有匹配到的窗口句柄
	函数 文本型 窗口_进程枚举句柄(禁引用 文本型 参_进程名称, 禁引用 文本型 参_标题, 禁引用 文本型 参_类名, long 参_匹配类型) : EnumWindowByProcess
		wstring 局_返回值
		#嵌入行 m_op.EnumWindowByProcess(参_进程名称.getPtr(), 参_标题.getPtr(), 参_类名.getPtr(), 参_匹配类型, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 根据指定进程名,枚举系统中符合条件的进程PID
	//@参数 进程名称
	//@返回 返回所有匹配的进程PID,返回格式："10180,15352,15000,17620,19412"
	函数 文本型 窗口_进程枚举PID(禁引用 文本型 参_进程名称) : EnumProcess
		wstring 局_返回值
		#嵌入行 m_op.EnumProcess(参_进程名称.getPtr(), 局_返回值);
		返回 (文本型)局_返回值

	//@备注 把窗口坐标转换为屏幕坐标
	//@参数 指定的窗口句柄
	//@参数 指针传址接收屏幕X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收屏幕Y坐标,如变量为整型y,参数填:&y
	//@返回 0:失败,1:成功
	函数 long 窗口_坐标转屏幕坐标(long 参_窗口句柄, long* 参_X指针, long* 参_Y指针) : ClientToScreen
		long 局_返回值 = 0
		#嵌入行 m_op.ClientToScreen(参_窗口句柄, 参_X指针, 参_Y指针, &局_返回值);
		返回 局_返回值

	//@备注 查找符合类名或者标题名的顶层可见窗口
	//@参数 窗口类名,如果为空,则匹配所有,这里的匹配是模糊匹配
	//@参数 窗口标题,如果为空,则匹配所有,这里的匹配是模糊匹配
	//@返回 返回窗口句柄,没找到则返回0
	函数 long 窗口_取句柄(禁引用 文本型 参_类名, 禁引用 文本型 参_标题) : FindWindow
		long 局_返回值 = 0
		#嵌入行 m_op.FindWindow(参_类名.getPtr(), 参_标题.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 根据指定的进程名字,来查找可见窗口
	//@参数 进程名,比如(notepad.exe),这里是精确匹配,但不区分大小写
	//@参数 窗口类名,如果为空,则匹配所有,这里的匹配是模糊匹配
	//@参数 窗口标题,如果为空,则匹配所有,这里的匹配是模糊匹配
	//@返回 返回窗口句柄,没找到则返回0
	函数 long 窗口_进程名取句柄(禁引用 文本型 参_进程名称, 禁引用 文本型 参_类名, 禁引用 文本型 参_标题) : FindWindowByProcess
		long 局_返回值 = 0
		#嵌入行 m_op.FindWindowByProcess(参_进程名称.getPtr(), 参_类名.getPtr(), 参_标题.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 根据指定的进程Id,来查找可见窗口
	//@参数 进程id
	//@参数 窗口类名,如果为空,则匹配所有,这里的匹配是模糊匹配
	//@参数 窗口标题,如果为空,则匹配所有,这里的匹配是模糊匹配
	//@返回 返回窗口句柄,没找到则返回0
	函数 long 窗口_进程ID取句柄(long 参_PID, 禁引用 文本型 参_类名, 禁引用 文本型 参_标题) : FindWindowByProcessId
		long 局_返回值 = 0
		#嵌入行 m_op.FindWindowByProcessId(参_PID, 参_类名.getPtr(), 参_标题.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 查找符合类名或者标题名的顶层可见窗口,如果指定了parent,则在parent的第一层子窗口中查找
	//@参数 父窗口句柄,如果为空,则匹配所有顶层窗口
	//@参数 窗口类名,如果为空,则匹配所有,这里的匹配是模糊匹配
	//@参数 窗口标题,如果为空,则匹配所有,这里的匹配是模糊匹配
	//@返回 返回窗口句柄,没找到则返回0
	函数 long 窗口_取句柄Ex(long 参_父窗口句柄, 禁引用 文本型 参_类名, 禁引用 文本型 参_标题) : FindWindowEx
		long 局_返回值 = 0
		#嵌入行 m_op.FindWindowEx(参_父窗口句柄, 参_类名.getPtr(), 参_标题.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 获取窗口客户区域在屏幕上的位置
	//@参数 指定的窗口句柄
	//@参数 指针传址接收窗口客户区左上角X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收窗口客户区左上角Y坐标,如变量为整型y,参数填:&y
	//@参数 指针传址接收窗口客户区右下角X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收窗口客户区右下角Y坐标,如变量为整型y,参数填:&y
	//@返回 0:失败,1:成功
	函数 long 窗口_取客户区区域(long 参_窗口句柄, long* 参_左上X指针, long* 参_左上Y指针, long* 参_右下X指针, long* 参_右下Y指针) : GetClientRect
		long 局_返回值 = 0
		#嵌入行 m_op.GetClientRect(参_窗口句柄, 参_左上X指针, 参_左上Y指针, 参_右下X指针, 参_右下Y指针, &局_返回值);
		返回 局_返回值

	//@备注 获取窗口客户区域的宽度和高度
	//@参数 指定的窗口句柄
	//@参数 指针传址接收窗口宽度,如变量为整型width,参数填:&width
	//@参数 指针传址接收窗口高度,如变量为整型height,参数填:&height
	//@返回 0:失败,1:成功
	函数 long 窗口_取大小(long 参_窗口句柄, long* 参_宽度指针, long* 参_高度指针) : GetClientSize
		long 局_返回值 = 0
		#嵌入行 m_op.GetClientSize(参_窗口句柄, 参_宽度指针, 参_高度指针, &局_返回值);
		返回 局_返回值

	//@备注 获取顶层活动窗口中具有输入焦点的窗口句柄
	//@返回 返回窗口句柄
	函数 long 窗口_取焦点窗口句柄() : GetForegroundFocus
		long 局_返回值 = 0
		#嵌入行 m_op.GetForegroundFocus(&局_返回值);
		返回 局_返回值

	//@备注 获取顶层活动窗口,可以获取到按键自带插件无法获取到的句柄
	//@返回 返回窗口句柄
	函数 long 窗口_取激活窗口句柄() : GetForegroundWindow
		long 局_返回值 = 0
		#嵌入行 m_op.GetForegroundWindow(&局_返回值);
		返回 局_返回值

	//@备注 获取鼠标指向的可见窗口句柄,可以获取到按键自带的插件无法获取到的句柄
	//@返回 返回窗口句柄
	函数 long 窗口_取鼠标处窗口句柄() : GetMousePointWindow
		long 局_返回值 = 0
		#嵌入行 m_op.GetMousePointWindow(&局_返回值);
		返回 局_返回值

	//@备注 获取给定坐标的可见窗口句柄
	//@返回 返回窗口句柄
	函数 long 窗口_取指定坐标点窗口句柄(long 参_X, long 参_Y) : GetPointWindow
		long 局_返回值 = 0
		#嵌入行 m_op.GetPointWindow(参_X, 参_Y, &局_返回值);
		返回 局_返回值

	//@备注 根据指定的pid获取进程详细信息,[进程名,进程全路径,CPU占用率(百分比),内存占用量(字节)]
	//@参数 进程pid
	//@返回 返回格式"进程名|进程路径|cpu|内存"
	函数 文本型 窗口_取进程信息(long 参_PID) : GetProcessInfo
		wstring 局_返回值
		#嵌入行 m_op.GetProcessInfo(参_PID, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 获取特殊窗口
	//@参数 0:获取桌面窗口,1:获取任务栏窗口
	//@返回 返回窗口句柄
	函数 long 窗口_取特殊窗口句柄(long 参_窗口标志) : GetSpecialWindow
		long 局_返回值 = 0
		#嵌入行 m_op.GetSpecialWindow(参_窗口标志,&局_返回值);
		返回 局_返回值

	//@备注 获取给定窗口相关的窗口句柄
	//@参数 指定的窗口句柄
	//@参数 0:获取父窗口,1:获取第一个子窗口,2:获取First窗口,3:获取Last窗口,4:获取下一个窗口,5:获取上一个窗口,6:获取拥有者窗口,7:获取顶层窗口
	//@返回 返回窗口句柄
	函数 long 窗口_取关联窗口句柄(long 参_窗口句柄, long 参_类型) : GetWindow
		long 局_返回值 = 0
		#嵌入行 m_op.GetWindow(参_窗口句柄,参_类型,&局_返回值);
		返回 局_返回值

	//@备注 获取窗口的类名
	//@参数 指定的窗口句柄
	//@返回 窗口的类名
	函数 文本型 窗口_取类名(long 参_窗口句柄) : GetWindowClass
		wstring 局_返回值
		#嵌入行 m_op.GetWindowClass(参_窗口句柄, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 获取指定窗口所在的进程ID
	//@参数 指定的窗口句柄
	//@返回 返回进程ID
	函数 long 窗口_句柄取进程ID(long 参_窗口句柄) : GetWindowProcessId
		long 局_返回值 = 0
		#嵌入行 m_op.GetWindowProcessId(参_窗口句柄, &局_返回值);
		返回 局_返回值

	//@备注 获取指定窗口所在的进程的exe文件全路径
	//@参数 指定的窗口句柄
	//@返回 返回指定窗口所在的进程全路径
	函数 文本型 窗口_句柄取进程路径(long 参_窗口句柄) : GetWindowProcessPath
		wstring 局_返回值 = 0
		#嵌入行 m_op.GetWindowProcessPath(参_窗口句柄, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 获取窗口在屏幕上的位置
	//@参数 指定的窗口句柄
	//@参数 指针传址接收窗口左上角X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收窗口左上角Y坐标,如变量为整型y,参数填:&y
	//@参数 指针传址接收窗口右下角X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收窗口右下角Y坐标,如变量为整型y,参数填:&y
	//@返回 0:失败,1:成功
	函数 long 窗口_取区域(long 参_窗口句柄, long* 参_左上X指针, long* 参_左上Y指针, long* 参_右下X指针, long* 参_右下Y指针) : GetWindowRect
		long 局_返回值
		#嵌入行 m_op.GetWindowRect(参_窗口句柄, 参_左上X指针, 参_左上Y指针, 参_右下X指针, 参_右下Y指针, &局_返回值);
		返回 局_返回值

	//@备注 获取窗口在屏幕上的位置
	//@参数 指定的窗口句柄
	//@参数 判断窗口0:是否存在,1:是否处于激活,2:是否可见,3:是否最小化,4:是否最大化,5:是否置顶,6:是否无响应,7:是否可用(灰色为不可用)
	//@返回 0:不满足条件,1:满足条件
	函数 long 窗口_取状态(long 参_窗口句柄, long 参_窗口状态) : GetWindowState
		long 局_返回值 = 0
		#嵌入行 m_op.GetWindowState(参_窗口句柄, 参_窗口状态, &局_返回值);
		返回 局_返回值

	//@备注 获取窗口的标题
	//@参数 指定的窗口句柄
	//@返回 返回窗口的标题
	函数 文本型 窗口_取标题(long 参_窗口句柄) : GetWindowTitle
		wstring 局_返回值
		#嵌入行 m_op.GetWindowTitle(参_窗口句柄,局_返回值);
		返回 (文本型)局_返回值

	//@备注 移动指定窗口到指定位置
	//@参数 指定的窗口句柄
	//@参数 指定的X坐标
	//@参数 指定的Y坐标
	//@返回 0:失败,1:成功
	函数 long 窗口_移动(long 参_窗口句柄, long 参_X, long 参_Y) : MoveWindow
		long 局_返回值 = 0
		#嵌入行 m_op.MoveWindow(参_窗口句柄,参_X,参_Y,&局_返回值);
		返回 局_返回值

	//@备注 把屏幕坐标转换为窗口坐标
	//@参数 指定的窗口句柄
	//@参数 指针传址接收窗口X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收窗口Y坐标,如变量为整型y,参数填:&y
	//@返回 0:失败,1:成功
	函数 long 窗口_屏幕坐标转窗口坐标(long 参_窗口句柄, long* 参_X指针, long* 参_Y指针) : ScreenToClient
		long 局_返回值 = 0
		#嵌入行 m_op.ScreenToClient(参_窗口句柄, 参_X指针, 参_Y指针, &局_返回值);
		返回 局_返回值

	//@备注 向指定窗口发送粘贴命令
	//@参数 指定的窗口句柄
	//@返回 0:失败,1:成功
	函数 long 窗口_发送粘贴命令(long 参_窗口句柄) : SendPaste
		long 局_返回值 = 0
		#嵌入行 m_op.SendPaste(参_窗口句柄, &局_返回值);
		返回 局_返回值

	//@备注 设置窗口客户区域的宽度和高度
	//@参数 指定的窗口句柄
	//@参数 宽度
	//@参数 高度
	//@返回 0:失败,1:成功
	函数 long 窗口_置客户区大小(long 参_窗口句柄, long 参_宽度, long 参_高度) : SetClientSize
		long 局_返回值 = 0
		#嵌入行 m_op.SetClientSize(参_窗口句柄, 参_宽度, 参_高度, &局_返回值);
		返回 局_返回值

	//@备注 设置窗口的状态
	//@参数 指定的窗口句柄
	//@参数 0:关闭,1:激活,2:最小化但不激活,3:最小化并释放内存,同时也会激活,4:最大化并激活,5:恢复但不激活,6:隐藏,7:显示,8:置顶,9:取消置顶,10:禁止,11:取消禁止,12:恢复并激活,13:强制结束窗口所在进程14:闪烁,15:获取输入焦点
	//@返回 0:失败,1:成功
	函数 long 窗口_置状态(long 参_窗口句柄, long 参_窗口状态) : SetWindowState
		long 局_返回值 = 0
		#嵌入行 m_op.SetWindowState(参_窗口句柄, 参_窗口状态, &局_返回值);
		返回 局_返回值

	//@备注 设置窗口的宽度和高度
	//@参数 指定的窗口句柄
	//@参数 宽度
	//@参数 高度
	//@返回 0:失败,1:成功
	函数 long 窗口_置大小(long 参_窗口句柄, long 参_宽度, long 参_高度) : SetWindowSize
		long 局_返回值 = 0
		#嵌入行 m_op.SetWindowSize(参_窗口句柄, 参_宽度, 参_高度, &局_返回值);
		返回 局_返回值

	//@备注 设置窗口的标题
	//@参数 指定的窗口句柄
	//@参数 标题
	//@返回 0:失败,1:成功
	函数 long 窗口_置标题(long 参_窗口句柄, 禁引用 文本型 参_窗口标题) : SetWindowText
		long 局_返回值 = 0
		#嵌入行 m_op.SetWindowText(参_窗口句柄, 参_窗口标题.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 设置窗口的透明度
	//@参数 指定的窗口句柄
	//@参数 透明度取值(0-255)越小透明度越大,0为完全透明(不可见),255为完全显示(不透明)
	//@返回 0:失败,1:成功
	函数 long 窗口_置透明度(long 参_窗口句柄, long 参_透明度) : SetWindowTransparent
		long 局_返回值 = 0
		#嵌入行 m_op.SetWindowTransparent(参_窗口句柄, 参_透明度, &局_返回值);
		返回 局_返回值

	//@备注 向指定窗口发送文本数据
	//@参数 指定的窗口句柄
	//@参数 发送的文本数据
	//@返回 0:失败,1:成功
	函数 long 窗口_发送文本数据(long 参_窗口句柄, 禁引用 文本型 参_文本) : SendString
		long 局_返回值 = 0
		#嵌入行 m_op.SendString(参_窗口句柄, 参_文本.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 向指定窗口发送文本数据-输入法
	//@参数 指定的窗口句柄
	//@参数 发送的文本数据
	//@返回 0:失败,1:成功
	函数 long 窗口_发送文本数据_输入法(long 参_窗口句柄, 禁引用 文本型 参_文本) : SendStringIme
		long 局_返回值 = 0
		#嵌入行 m_op.SendStringIme(参_窗口句柄, 参_文本.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 运行可执行文件,可指定模式
	//@参数 指定的可执行程序全路径
	//@参数 0:普通模式,1:加强模式
	//@返回 0:失败,1:成功
	函数 long 系统_指定模式运行(禁引用 文本型 参_路径, long 参_模式) : RunApp
		long 局_返回值 = 0
		#嵌入行 m_op.RunApp(参_路径.getPtr(), 参_模式, &局_返回值);
		返回 局_返回值

	//@备注 运行可执行文件,可指定显示模式
	//@参数 指定的可执行程序全路径
	//@参数 0:隐藏,1:用最近的大小和位置显示,激活
	//@返回 0:失败,1:成功
	函数 long 系统_指定显示模式运行(禁引用 文本型 参_路径, long 参_显示模式) : WinExec
		long 局_返回值 = 0
		#嵌入行 m_op.WinExec(参_路径.getPtr(), 参_显示模式, &局_返回值);
		返回 局_返回值

	//@备注 运行命令行并返回结果
	//@参数 指定的可执行程序全路径
	//@参数 等待的时间(毫秒)
	//@返回 cmd输出的字符
	函数 文本型 系统_取命令行运行结果(禁引用 文本型 参_命令行, long 参_延时) : GetCmdStr
		wstring 局_返回值
		#嵌入行 m_op.GetCmdStr(参_命令行.getPtr(), 参_延时, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 设置剪贴板文本
	//@参数 指设置剪贴板内容的文本
	//@返回 0:失败,1:成功
	函数 long 系统_置剪贴板文本(禁引用 文本型 参_文本) : SetClipboard
		long 局_返回值 = 0
		#嵌入行 m_op.SetClipboard(参_文本.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 从系统剪贴板获取数据文本
	//@返回 成功则返回剪贴板数据文本
	函数 文本型 系统_取剪贴板文本() : GetClipboard
		wstring 局_返回值
		#嵌入行 m_op.GetClipboard(局_返回值);
		返回 (文本型)局_返回值

	//@备注 该函数旨在实现一个指定毫秒数的延迟,同时确保在此期间不会阻塞用户界面（UI）操作
	//@参数 指定延迟的时间，单位为毫秒
	//@返回 0:失败,1:成功
	函数 long 系统_延时(long 参_延时) : Delay
		long 局_返回值 = 0
		#嵌入行 m_op.Delay(参_延时, &局_返回值);
		返回 局_返回值

	//@备注 该函数旨在实现一个随机毫秒数的延迟,同时确保在此期间不会阻塞用户界面（UI）操作
	//@参数 指定延迟时间的最小值，单位为毫秒
	//@参数 指定延迟时间的最大值，单位为毫秒
	//@返回 0:失败,1:成功
	函数 long 系统_随机延时(long 参_最小延时, long 参_最大延时) : Delays
		long 局_返回值 = 0
		#嵌入行 m_op.Delays(参_最小延时, 参_最大延时, &局_返回值);
		返回 局_返回值

	//@参数 指定的窗口句柄
	//@参数 屏幕显示模式,详见文档:https://github.com/WallBreaker2/op/wiki/background
	//@参数 鼠标仿真模式,详见文档:https://github.com/WallBreaker2/op/wiki/background
	//@参数 键盘仿真模式,详见文档:https://github.com/WallBreaker2/op/wiki/background
	//@参数 绑定模式,取值0、1
	//@返回 0:失败,1:成功
	//@备注 绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定.
	函数 long 绑定_绑定窗口句柄(long 参_窗口句柄, 禁引用 文本型 参_图像模式, 禁引用 文本型 参_鼠标模式, 禁引用 文本型 参_键盘模式, long 参_绑定模式) : BindWindow
		long 局_返回值 = 0
		#嵌入行 m_op.BindWindow(参_窗口句柄, 参_图像模式.getPtr(), 参_鼠标模式.getPtr(), 参_键盘模式.getPtr(), 参_绑定模式, &局_返回值);
		返回 局_返回值

	//@返回 0:失败,1:成功
	//@备注 解除绑定窗口,并释放系统资源
	函数 long 绑定_解绑窗口句柄() : UnBindWindow
		long 局_返回值 = 0
		#嵌入行 m_op.UnBindWindow(&局_返回值);
		返回 局_返回值

	//@备注 获取当前对象已经绑定的窗口句柄. 无绑定返回 : 0
	函数 long 绑定_取已绑定窗口句柄() : GetBindWindow
		long 局_返回值 = 0
		#嵌入行 m_op.GetBindWindow(&局_返回值);
		返回 局_返回值

	//@返回 0:表示未绑定状态,1:表示已绑定状态
	//@备注 该函数旨在判断当前对象是否已绑定窗口
	函数 long 绑定_取绑定状态() : IsBind
		long 局_返回值 = 0
		#嵌入行 m_op.IsBind(&局_返回值);
		返回 局_返回值

	//@备注 获取鼠标屏幕坐标
	//@参数 指针传址接收X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收Y坐标,如变量为整型y,参数填:&y
	//@返回 0:失败,1:成功
	函数 long 鼠标_取当前坐标(long* 参_当前X指针, long* 参_当前Y指针) : GetCursorPos
		long 局_返回值 = 0
		#嵌入行 m_op.GetCursorPos(参_当前X指针, 参_当前Y指针, &局_返回值);
		返回 局_返回值

	//@备注 鼠标相对于上次的位置移动rx,ry
	//@参数 相对于上次的X偏移
	//@参数 相对于上次的Y偏移
	//@返回 0:失败,1:成功
	函数 long 鼠标_相对移动(long 参_X偏移, long 参_Y偏移) : MoveR
		long 局_返回值 = 0
		#嵌入行 m_op.MoveR(参_X偏移, 参_Y偏移, &局_返回值);
		返回 局_返回值

	//@备注 把鼠标移动到目的点(x,y)
	//@参数 X坐标
	//@参数 Y坐标
	//@返回 0:失败,1:成功
	函数 long 鼠标_移动(long 参_X, long 参_Y) : MoveTo
		long 局_返回值 = 0
		#嵌入行 m_op.MoveTo(参_X, 参_Y, &局_返回值);
		返回 局_返回值

	//@备注 把鼠标移动到目的范围内的随机一点
	//@参数 X坐标
	//@参数 Y坐标
	//@参数 宽度(从x计算起)
	//@参数 高度(从y计算起)
	//@返回 0:失败,1:成功
	函数 long 鼠标_范围随机移动(long 参_X, long 参_Y, long 参_宽度, long 参_高度) : MoveToEx
		long 局_返回值 = 0
		#嵌入行 m_op.MoveToEx(参_X, 参_Y, 参_宽度, 参_高度, &局_返回值);
		返回 局_返回值

	//@备注 单击鼠标左键
	//@返回 0:失败,1:成功
	函数 long 鼠标_左键单击() : LeftClick
		long 局_返回值 = 0
		#嵌入行 m_op.LeftClick(&局_返回值);
		返回 局_返回值

	//@备注 双击鼠标左键
	//@返回 0:失败,1:成功
	函数 long 鼠标_左键双击() : LeftDoubleClick
		long 局_返回值 = 0
		#嵌入行 m_op.LeftDoubleClick(&局_返回值);
		返回 局_返回值

	//@备注 按住鼠标左键
	//@返回 0:失败,1:成功
	函数 long 鼠标_左键按下() : LeftDown
		long 局_返回值 = 0
		#嵌入行 m_op.LeftDown(&局_返回值);
		返回 局_返回值

	//@备注 弹起鼠标左键
	//@返回 0:失败,1:成功
	函数 long 鼠标_左键弹起() : LeftUp
		long 局_返回值 = 0
		#嵌入行 m_op.LeftUp(&局_返回值);
		返回 局_返回值

	//@备注 单击鼠标中键
	//@返回 0:失败,1:成功
	函数 long 鼠标_中键单击() : MiddleClick
		long 局_返回值 = 0
		#嵌入行 m_op.MiddleClick(&局_返回值);
		返回 局_返回值

	//@备注 按住鼠标中键
	//@返回 0:失败,1:成功
	函数 long 鼠标_中键按下() : MiddleDown
		long 局_返回值 = 0
		#嵌入行 m_op.MiddleDown(&局_返回值);
		返回 局_返回值

	//@备注 弹起鼠标中键
	//@返回 0:失败,1:成功
	函数 long 鼠标_中键弹起() : MiddleUp
		long 局_返回值 = 0
		#嵌入行 m_op.MiddleUp(&局_返回值);
		返回 局_返回值

	//@备注 单击鼠标右键
	//@返回 0:失败,1:成功
	函数 long 鼠标_右键单击() : RightClick
		long 局_返回值 = 0
		#嵌入行 m_op.RightClick(&局_返回值);
		返回 局_返回值

	//@备注 按住鼠标右键
	//@返回 0:失败,1:成功
	函数 long 鼠标_右键按下() : RightDown
		long 局_返回值 = 0
		#嵌入行 m_op.RightDown(&局_返回值);
		返回 局_返回值

	//@备注 弹起鼠标右键
	//@返回 0:失败,1:成功
	函数 long 鼠标_右键弹起() : RightUp
		long 局_返回值 = 0
		#嵌入行 m_op.RightUp(&局_返回值);
		返回 局_返回值

	//@备注 滚轮向下滚
	//@返回 0:失败,1:成功
	函数 long 鼠标_滚轮向下滚动() : WheelDown
		long 局_返回值 = 0
		#嵌入行 m_op.WheelDown(&局_返回值);
		返回 局_返回值

	//@备注 滚轮向上滚
	//@返回 0:失败,1:成功
	函数 long 鼠标_滚轮向上滚动() : WheelUp
		long 局_返回值 = 0
		#嵌入行 m_op.WheelUp(&局_返回值);
		返回 局_返回值

	//@备注 该函数旨在设置鼠标单击或双击时，鼠标按下和弹起之间的时间间隔。
	//@参数 鼠标类型，取值："normal"或"windows"或"dx"
	//@参数 指定鼠标按下和弹起之间的时间间隔，单位毫秒,"normal"默认30ms,"windows"默认10ms,"dx",默认为:40ms
	//@返回 0:失败,1:成功
	函数 long 鼠标_置操作间隔(禁引用 文本型 参_鼠标类型, long 参_间隔) : SetMouseDelay
		long 局_返回值 = 0
		#嵌入行 m_op.SetMouseDelay(参_鼠标类型.getPtr(), 参_间隔, &局_返回值);
		返回 局_返回值

	//@备注 获取指定的按键状态.(前台信息,不是后台)
	//@参数 虚拟按键码,基础模块中已有虚拟键码宏可直接用,如输入"回车键",右键转到定义,就可查看其他按键宏
	//@返回 0:弹起,1:按下,大小写、特殊功能键状态返回值请自行测试
	函数 long 键盘_取状态(long 参_虚拟按键码) : GetKeyState
		long 局_返回值 = 0
		#嵌入行 m_op.GetKeyState(参_虚拟按键码, &局_返回值);
		返回 局_返回值

	//@备注 按住指定的虚拟键码
	//@参数 虚拟按键码,基础模块中已有虚拟键码宏可直接用,如输入"回车键",右键转到定义,就可查看其他按键宏
	//@返回 0:失败,1:成功
	函数 long 键盘_按下(long 参_虚拟按键码) : KeyDown
		long 局_返回值 = 0
		#嵌入行 m_op.KeyDown(参_虚拟按键码, &局_返回值);
		返回 局_返回值

	//@备注 按住指定的虚拟键码,文本形式
	//@参数 文本型描述的键码,如"enter"，详见https://github.com/WallBreaker2/op/wiki/keypad#keycode
	//@返回 0:失败,1:成功
	函数 long 键盘_按下_文本型虚拟键码(禁引用 文本型 参_虚拟按键码) : KeyDownChar
		long 局_返回值 = 0
		#嵌入行 m_op.KeyDownChar(参_虚拟按键码.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 弹起来虚拟键
	//@参数 虚拟按键码,基础模块中已有虚拟键码宏可直接用,如输入"回车键",右键转到定义,就可查看其他按键宏
	//@返回 0:失败,1:成功
	函数 long 键盘_弹起(long 参_虚拟按键码) : KeyUp
		long 局_返回值 = 0
		#嵌入行 m_op.KeyUp(参_虚拟按键码, &局_返回值);
		返回 局_返回值

	//@备注 弹起来虚拟键,文本形式
	//@参数 文本型描述的键码,如"enter"，详见https://github.com/WallBreaker2/op/wiki/keypad#keycode
	//@返回 0:失败,1:成功
	函数 long 键盘_弹起文本型虚拟键码(禁引用 文本型 参_虚拟按键码) : KeyUpChar
		long 局_返回值 = 0
		#嵌入行 m_op.KeyUpChar(参_虚拟按键码.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 等待指定的按键按下(前台,不是后台)
	//@参数 0:等待任意按键,1:鼠标左键,2:鼠标右键,4:鼠标中键,其他是虚拟按键码
	//@参数 单位毫秒.如果是0表示一直等待
	//@返回 0:失败,1:成功
	函数 long 键盘_等待前台按键(long 参_虚拟按键码, long 参_最大等待时间) : WaitKey
		long 局_返回值 = 0
		#嵌入行 m_op.WaitKey(参_虚拟按键码, 参_最大等待时间, &局_返回值);
		返回 局_返回值

	//@备注 单击指定的虚拟键码
	//@参数 虚拟按键码,基础模块中已有虚拟键码宏可直接用,如输入"回车键",右键转到定义,就可查看其他按键宏
	//@返回 0:失败,1:成功
	函数 long 键盘_单击(long 参_虚拟按键码) : KeyPress
		long 局_返回值 = 0
		#嵌入行 m_op.KeyPress(参_虚拟按键码, &局_返回值);
		返回 局_返回值

	//@备注 单击指定的虚拟键码,文本形式
	//@参数 文本型描述的键码,如"enter"，详见https://github.com/WallBreaker2/op/wiki/keypad#keycode
	//@返回 0:失败,1:成功
	函数 long 键盘_单击_文本型虚拟键码(禁引用 文本型 参_虚拟按键码) : KeyPressChar
		long 局_返回值 = 0
		#嵌入行 m_op.KeyPressChar(参_虚拟按键码.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 该函数旨在设置按键时，键盘按下和弹起之间的时间间隔。
	//@参数 键盘类型，取值："normal"或"normal2"或"windows"或"dx"
	//@参数 指定鼠标按下和弹起之间的时间间隔，单位毫秒,"normal"默认30ms,"normal2"默认30ms,"windows"默认10ms,"dx",默认为:50ms
	//@返回 0:失败,1:成功
	函数 long 键盘_置操作间隔(禁引用 文本型 参_键盘类型, long 参_间隔) : SetKeypadDelay
		long 局_返回值 = 0
		#嵌入行 m_op.SetKeypadDelay(参_键盘类型.getPtr(), 参_间隔, &局_返回值);
		返回 局_返回值

	//@备注 根据指定文本，依次按顺序按下其中的按键
	//@参数 需要按下的按键文本.比如"1234","abcd","7389,1462"等.
	//@参数 每按下一个按键，需要延时多久.单位毫秒
	//@返回 0:失败,1:成功
	函数 long 键盘_输入(禁引用 文本型 参_按键名文本, long 参_间隔) : KeyPressStr
		long 局_返回值 = 0
		#嵌入行 m_op.KeyPressStr(参_按键名文本.getPtr(), 参_间隔, &局_返回值);
		返回 局_返回值

	//@备注 抓取指定区域(x1,y1,x2,y2)的图像,保存为文件,例 op.Capture(0,0,2000,2000,"screen.bmp")
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 文件名,保存在SetPath中设置的目录，也可以自定义路径
	//@返回 0:失败,1:成功
	函数 long 图色_区域截图到文件(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_文件名) : Capture
		long 局_返回值 = 0
		#嵌入行 m_op.Capture(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_文件名.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 比较指定坐标点(x,y)的颜色
	//@参数 X坐标
	//@参数 Y坐标
	//@参数 颜色文本，例如"ffffff-202020|000000-000000"，每种颜色用"|"分割，最多10种
	//@参数 相似度,取值范围0.1-1.0
	//@返回 0:颜色不匹配,1:颜色匹配
	函数 long 图色_坐标点颜色匹配(long 参_X, long 参_Y, 禁引用 文本型 参_颜色, 双浮点型 参_相似度) : CmpColor
		long 局_返回值 = 0
		#嵌入行 m_op.CmpColor(参_X, 参_Y, 参_颜色.getPtr(), 参_相似度, &局_返回值);
		返回 局_返回值

	//@备注 查找指定区域内的颜色
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 颜色文本，比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 相似度,取值范围0.1-1.0
	//@参数 查找方向,0:→↓,1:→↑,2:←↓,3:←↑,4:从中心向外5:↓→,6:↓←,7:↑→,8:↑←
	//@参数 指针传址接收找到的X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收找到的Y坐标,如变量为整型y,参数填:&y
	//@返回 0:未找到,1:成功找到
	函数 long 图色_区域找色(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_颜色, 双浮点型 参_相似度, long 参_查找方向, long* 参_结果X指针, long* 参_结果Y指针) : FindColor
		long 局_返回值 = 0
		#嵌入行 m_op.FindColor(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_颜色.getPtr(), 参_相似度, 参_查找方向, 参_结果X指针, 参_结果Y指针, &局_返回值);
		返回 局_返回值

	//@备注 查找指定区域内的所有颜色
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 颜色文本，比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 相似度,取值范围0.1-1.0
	//@参数 查找方向,0:→↓,1:→↑,2:←↓,3:←↑,4:从中心向外5:↓→,6:↓←,7:↑→,8:↑←
	//@返回 返回所有颜色信息的坐标值
	函数 文本型 图色_区域找色Ex(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_颜色, 双浮点型 参_相似度, long 参_查找方向) : FindColorEx
		wstring 局_返回值
		#嵌入行 m_op.FindColorEx(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_颜色.getPtr(), 参_相似度, 参_查找方向, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 根据指定的多点查找颜色坐标
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 颜色文本，比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 偏移颜色可以支持任意多个点,格式为如"9|2|-00ff00|-ff0000,15|2|2dff1c-010101,6|11|a0d962|aabbcc,11|14|-ffffff"
	//@参数 相似度,取值范围0.1-1.0
	//@参数 查找方向,0:→↓,1:→↑,2:←↓,3:←↑,4:从中心向外5:↓→,6:↓←,7:↑→,8:↑←
	//@参数 指针传址接收找到的X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收找到的Y坐标,如变量为整型y,参数填:&y
	//@返回 0:未找到,1:成功找到
	函数 long 图色_多点找色(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_颜色, 禁引用 文本型 参_偏色, 双浮点型 参_相似度, long 参_查找方向, long* 参_结果X指针, long* 参_结果Y指针) : FindMultiColor
		long 局_返回值 = 0
		#嵌入行 m_op.FindMultiColor(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_颜色.getPtr(), 参_偏色.getPtr(), 参_相似度, 参_查找方向, 参_结果X指针, 参_结果Y指针, &局_返回值);
		返回 局_返回值

	//@备注 根据指定的多点查找所有颜色坐标
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 颜色文本，比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 偏移颜色可以支持任意多个点,格式为如"9|2|-00ff00|-ff0000,15|2|2dff1c-010101,6|11|a0d962|aabbcc,11|14|-ffffff"
	//@参数 相似度,取值范围0.1-1.0
	//@参数 查找方向,0:→↓,1:→↑,2:←↓,3:←↑,4:从中心向外5:↓→,6:↓←,7:↑→,8:↑←
	//@返回 返回所有颜色信息的坐标,坐标是first_color所在的坐标
	函数 文本型 图色_多点找色Ex(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_颜色, 禁引用 文本型 参_偏色, 双浮点型 参_相似度, long 参_查找方向) : FindMultiColorEx
		wstring 局_返回值
		#嵌入行 m_op.FindMultiColorEx(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_颜色.getPtr(), 参_偏色.getPtr(), 参_相似度, 参_查找方向, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 查找指定区域内的图片
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 图片名,可以是多个图片,比如"test1.bmp|test2.bmp|test3.bmp"
	//@参数 颜色色偏,如"203040"
	//@参数 相似度,取值范围0.1-1.0
	//@参数 查找方向,0:→↓,1:→↑,2:←↓,3:←↑,4:从中心向外5:↓→,6:↓←,7:↑→,8:↑←
	//@参数 指针传址接收找到的X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收找到的Y坐标,如变量为整型y,参数填:&y
	//@返回 返回找到的图片的序号,从0开始索引.如果没找到返回-1
	函数 long 图色_区域找图(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_图片名, 禁引用 文本型 参_色偏, 双浮点型 参_相似度, long 参_查找方向, long* 参_结果X指针, long* 参_结果Y指针) : FindPic
		long 局_返回值 = 0
		#嵌入行 m_op.FindPic(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_图片名.getPtr(), 参_色偏.getPtr(), 参_相似度, 参_查找方向, 参_结果X指针, 参_结果Y指针, &局_返回值);
		返回 局_返回值

	//@备注 查找多个图片,并且返回所有找到的图像的坐标
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 图片名,可以是多个图片,比如"test1.bmp|test2.bmp|test3.bmp"
	//@参数 颜色色偏,如"203040"
	//@参数 相似度,取值范围0.1-1.0
	//@参数 查找方向,0:→↓,1:→↑,2:←↓,3:←↑,4:从中心向外5:↓→,6:↓←,7:↑→,8:↑←
	//@返回 返回的是所有找到的坐标格式如下:"id,x,y|id,x,y..|id,x,y";id对应图片序号，x,y图片左上角的坐标
	函数 文本型 图色_区域找图Ex(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_图片名, 禁引用 文本型 参_色偏, 双浮点型 参_相似度, long 参_查找方向) : FindPicEx
		wstring 局_返回值
		#嵌入行 m_op.FindPicEx(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_图片名.getPtr(), 参_色偏.getPtr(), 参_相似度, 参_查找方向, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 查找多个图片,并且返回所有找到的图像的坐标,此函数同FindPicEx,只是返回值不同
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 图片名,可以是多个图片,比如"test1.bmp|test2.bmp|test3.bmp"
	//@参数 颜色色偏,如"203040"
	//@参数 相似度,取值范围0.1-1.0
	//@参数 查找方向,0:→↓,1:→↑,2:←↓,3:←↑,4:从中心向外5:↓→,6:↓←,7:↑→,8:↑←
	//@返回 返回的是所有找到的坐标格式如下:"file,x,y| file,x,y..| file,x,y" (图片左上角的坐标)如"1.bmp,100,20|2.bmp,30,40"
	函数 文本型 图色_区域找图ExS(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_图片名, 禁引用 文本型 参_色偏, 双浮点型 参_相似度, long 参_查找方向) : FindPicExS
		wstring 局_返回值
		#嵌入行 m_op.FindPicExS(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_图片名.getPtr(), 参_色偏.getPtr(), 参_相似度, 参_查找方向, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 查找指定区域内的颜色块,颜色格式"RRGGBB-DRDGDB",注意,和按键的颜色格式相反
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 颜色格式串，比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 相似度,取值范围0.1-1.0
	//@参数 在宽度为width,高度为height的颜色块中，符合color颜色的最小数量,通过工具在二值化区域中查看
	//@参数 颜色块的宽度
	//@参数 颜色块的高度
	//@参数 指针传址接收找到的X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收找到的Y坐标,如变量为整型y,参数填:&y
	//@返回 0:未找到,1:成功找到
	函数 long 图色_区域找颜色块(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_颜色, 双浮点型 参_相似度, long 参_数量, long 参_宽度, long 参_高度, long* 参_结果X指针, long* 参_结果Y指针) : FindColorBlock
		long 局_返回值 = 0
		#嵌入行 m_op.FindColorBlock(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_颜色.getPtr(), 参_相似度, 参_数量, 参_宽度, 参_高度, 参_结果X指针, 参_结果Y指针, &局_返回值);
		返回 局_返回值

	//@备注 查找指定区域内的所有颜色块,颜色格式"RRGGBB-DRDGDB",注意,和按键的颜色格式相反
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 颜色格式串,比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 相似度,取值范围0.1-1.0
	//@参数 在宽度为width,高度为height的颜色块中，符合color颜色的最小数量,通过工具在二值化区域中查看
	//@参数 颜色块的宽度
	//@参数 颜色块的高度
	//@返回 返回所有颜色块信息的坐标
	函数 文本型 图色_区域找颜色块Ex(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_颜色, 双浮点型 参_相似度, long 参_数量, long 参_宽度, long 参_高度) : FindColorBlockEx
		wstring 局_返回值
		#嵌入行 m_op.FindColorBlockEx(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_颜色.getPtr(), 参_相似度, 参_数量, 参_宽度, 参_高度, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 获取(x,y)的颜色
	//@参数 X坐标
	//@参数 Y坐标
	//@返回 返回颜色字符串
	函数 文本型 图色_坐标点取色(long 参_X, long 参_Y) : GetColor
		wstring 局_返回值
		#嵌入行 m_op.GetColor(参_X, 参_Y, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 设置图色输入方式，默认窗口截图.设置后所有和图色相关的函数均视为对此图片进行处理，比如文字识别查找图片颜色等等一切图色函数
	//@参数 图色输入模式,"screen"使用前台或后台窗口,pic为指定的图片文件,如"pic:d:\test.bmp"或"pic:test.bmp",mem为指定的内存图片数据,如"mem:1230434"
	//@返回 0:失败,1:成功
	函数 long 图色_置输入方式(禁引用 文本型 参_模式) : SetDisplayInput
		long 局_返回值 = 0
		#嵌入行 m_op.SetDisplayInput(参_模式.getPtr(),&局_返回值);
		返回 局_返回值

	//@备注 预加载指定的图片加入缓存,该方法需要SetPath设置全局路径
	//@参数 文件名,比如"1.bmp|2.bmp|3.bmp"等.
	//@返回 0:失败,1:成功
	函数 long 图色_图片载入缓存(禁引用 文本型 参_文件名) : LoadPic
		long 局_返回值 = 0
		#嵌入行 m_op.LoadPic(参_文件名.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 释放指定的图片缓存
	//@参数 文件名,比如"1.bmp|2.bmp|3.bmp"等.
	//@返回 0:失败,1:成功
	函数 long 图色_图片释放缓存(禁引用 文本型 参_文件名) : FreePic
		long 局_返回值 = 0
		#嵌入行 m_op.FreePic(参_文件名.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 从内存中加载图片，并将加载结果返回
	//@参数 图片的文件名,如"1.bmp"
	//@参数 图像数据指针
	//@参数 图像数据的大小
	//@返回 0:失败,1:成功
	函数 long 图色_从内存载入图片(禁引用 文本型 参_文件名, 空类型* 参_图像数据指针, long 参_图像数据大小) : LoadMemPic
		long 局_返回值 = 0
		#嵌入行 m_op.LoadMemPic(参_文件名.getPtr(), 参_图像数据指针, 参_图像数据大小, &局_返回值);
		返回 局_返回值

	//@备注 获取指定区域的图像,用二进制数据的方式返回
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 返回的是指定区域的二进制图片颜色数据，每个颜色是 4 个字节,表示方式为(00RRGGBB)
	//@返回 0:失败,1:成功
	函数 long 图色_取区域图片颜色数据(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, size_t* 参_颜色数据指针) : GetScreenData
		long 局_返回值 = 0
		#嵌入行 m_op.GetScreenData(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_颜色数据指针, &局_返回值);
		返回 局_返回值

	//@备注 获取指定区域的图像,用24位位图的数据格式返回
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 指针传址接收返回图片的数据指针
	//@参数 指针传址接收返回图片的数据长度
	//@返回 0:失败,1:成功
	函数 long 图色_取区域图片位图数据(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, size_t* 参_位图数据指针, long* 参_位图数据长度指针) : GetScreenDataBmp
		long 局_返回值 = 0
		#嵌入行 m_op.GetScreenDataBmp(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_位图数据指针, 参_位图数据长度指针, &局_返回值);
		返回 局_返回值

	//@备注 获取屏幕帧信息
	//@参数 指针传址接收屏幕帧的ID,如变量为整型frame_id,参数填:&frame_id
	//@参数 指针传址接收时间戳,如变量为整型time,参数填:&time
	//@返回 无
	函数 空类型 图色_取屏幕帧信息(long* 参_屏幕帧ID, long* 参_时间戳) : GetScreenFrameInfo
		#嵌入行 m_op.GetScreenFrameInfo(参_屏幕帧ID,参_时间戳);
		返回

	//@备注 根据通配符获取文件集合.方便用于FindPic和FindPicEx
	//@参数 文件名(可以使用通配符),如"a?c*.bmp|1.bmp|*.bmp"代表a任意字母c的所有bmp文件,1.bmp,所有的bmp
	//@返回 返回的是通配符对应的文件集合，每个图片以|分割
	函数 文本型 图色_模糊匹配图片名(禁引用 文本型 参_文件名) : MatchPicName
		wstring 局_返回值
		#嵌入行 m_op.MatchPicName(参_文件名.getPtr(), 局_返回值);
		返回 (文本型)局_返回值

	//@备注 未见文档,用法暂未知,调用UseDict将其切换至空的字库，则使用OCR引擎识别，默认32位使用: tess_model,64位则时使用: paddle
	函数 long Ocr_置引擎(禁引用 文本型 参_path_of_engine, 禁引用 文本型 参_dll_name, 禁引用 文本型 参_argv) : SetOcrEngine
		long 局_返回值 = 0
		#嵌入行 局_返回值 = m_op.SetOcrEngine(参_path_of_engine.getPtr(), 参_dll_name.getPtr(), 参_argv.getPtr());
		返回 局_返回值

	//@备注 设置字库文件(index：范围:0-9)不能超过10个字库,注:此函数速度很慢，全局初始化时调用一次即可，切换字库用UseDict
	//@参数 字库的序号,取值为0-9
	//@参数 字库文件名
	//@返回 0:失败,1:成功
	函数 long Ocr_置字库文件(long 参_字库序号, 禁引用 文本型 参_字库文件名) : SetDict
		long 局_返回值 = 0
		#嵌入行 m_op.SetDict(参_字库序号, 参_字库文件名.getPtr(), &局_返回值);
		返回 局_返回值

	//@备注 设置内存字库文件
	//@参数 字库的序号,取值为0-9
	//@参数 字库内容数据,如文本型 a,可填a.取地址()
	//@参数 字库大小,如文本型 a,可填(long)a.取大小()
	//@返回 0:失败,1:成功
	函数 long Ocr_置内存字库文件(long 参_字库序号, 常量 字符型* 参_字库数据指针, long 参_字库数据大小) : SetMemDict
		long 局_返回值 = 0
		#嵌入行 m_op.SetMemDict(参_字库序号, 参_字库数据指针, 参_字库数据大小, &局_返回值);
		返回 局_返回值

	//@备注 选择使用哪个字库文件进行识别(index:范围:0-9)
	//@参数 字库的序号,取值为0-9
	//@返回 0:失败,1:成功
	函数 long Ocr_置字库切换(long 参_字库序号) : UseDict
		long 局_返回值 = 0
		#嵌入行 m_op.UseDict(参_字库序号, &局_返回值);
		返回 局_返回值

	//@备注 识别屏幕范围(x1,y1,x2,y2)内符合color的文本,若当前对象未设置字库，则使用ocr引擎进行文字识别
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 颜色格式串,比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 相似度,取值范围0.1-1.0
	//@返回 返回识别到的字符串
	函数 文本型 Ocr_区域Ocr(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_颜色, 双浮点型 参_相似度) : Ocr
		wstring 局_返回值
		#嵌入行 m_op.Ocr(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_颜色.getPtr(), 参_相似度, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 该方法可以返回识别到的文本，以及每个字符的坐标,若当前对象未设置字库，则使用ocr引擎进行文字识别
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 颜色格式串,比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 相似度,取值范围0.1-1.0
	//@返回 返回识别到的文本以及坐标
	函数 文本型 Ocr_区域OcrEx(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_颜色, 双浮点型 参_相似度) : OcrEx
		wstring 局_返回值
		#嵌入行 m_op.OcrEx(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_颜色.getPtr(), 参_相似度, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 在屏幕范围(x1,y1,x2,y2)内,查找str(可以是任意个文本的组合),并返回符合color的坐标位置
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 待查找的文本,可以是字符串组合，比如"长安|洛阳|大雁塔"
	//@参数 颜色格式串,比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 相似度,取值范围0.1-1.0
	//@参数 指针传址接收找到的X坐标,如变量为整型x,参数填:&x
	//@参数 指针传址接收找到的Y坐标,如变量为整型y,参数填:&y
	//@返回 返回字符串的索引,没找到返回-1,比如"长安|洛阳",若找到长安，则返回0
	函数 long Ocr_区域找字(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_待查找文本, 禁引用 文本型 参_颜色, 双浮点型 参_相似度, long* 参_结果X指针, long* 参_结果Y指针) : FindStr
		long 局_返回值 = 0
		#嵌入行 m_op.FindStr(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_待查找文本.getPtr(), 参_颜色.getPtr(), 参_相似度, 参_结果X指针, 参_结果Y指针, &局_返回值);
		返回 局_返回值

	//@备注 在屏幕范围(x1,y1,x2,y2)内,查找str(可以是任意个文本的组合),返回符合color的所有坐标位置
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 待查找的文本,可以是字符串组合，比如"长安|洛阳|大雁塔"
	//@参数 颜色格式串,比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 相似度,取值范围0.1-1.0
	//@返回 返回所有找到的坐标集合,格式如下:"id,x0,y0|id,x1,y1|......|id,xn,yn"如"0,100,20|2,30,40"
	函数 文本型 Ocr_区域找字Ex(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_待查找文本, 禁引用 文本型 参_颜色, 双浮点型 参_相似度) : FindStrEx
		wstring 局_返回值
		#嵌入行 m_op.FindStrEx(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_待查找文本.getPtr(), 参_颜色.getPtr(), 参_相似度, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 识别屏幕范围(x1,y1,x2,y2)内的文本,自动二值化，而无需指定颜色，适用于字体颜色和背景相差较大的场合
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 相似度,取值范围0.1-1.0
	//@返回 返回识别到的文本
	函数 文本型 Ocr_区域智能Ocr(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 双浮点型 参_相似度) : OcrAuto
		wstring 局_返回值
		#嵌入行 m_op.OcrAuto(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_相似度, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 从文件中识别图片
	//@参数 文件名,如"test.png"
	//@参数 颜色格式串,比如"9f2e3f-000000"
	//@参数 相似度,取值范围0.1-1.0
	//@返回 返回识别到的文本
	函数 文本型 Ocr_图片文件Ocr(禁引用 文本型 参_文件名, 禁引用 文本型 参_颜色, 双浮点型 参_相似度) : OcrFromFile
		wstring 局_返回值
		#嵌入行 m_op.OcrFromFile(参_文件名.getPtr(), 参_颜色.getPtr(), 参_相似度, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 从文件中识别图片,自动二值化,无需指定颜色
	//@参数 文件名,如"test.png"
	//@参数 相似度,取值范围0.1-1.0
	//@返回 返回识别到的文本
	函数 文本型 Ocr_图片文件智能Ocr(禁引用 文本型 参_文件名, 双浮点型 参_相似度) : OcrAutoFromFile
		wstring 局_返回值
		#嵌入行 m_op.OcrAutoFromFile(参_文件名.getPtr(), 参_相似度, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 在指定的屏幕坐标范围内,查找指定颜色的直线
	//@参数 区域的左上X坐标
	//@参数 区域的左上Y坐标
	//@参数 区域的右下X坐标
	//@参数 区域的右下Y坐标
	//@参数 颜色格式串,比如"FFFFFF-000000|CCCCCC-000000"每种颜色用"|"分割
	//@参数 相似度,取值范围0.1-1.0
	//@返回 返回识别到的结果
	函数 文本型 Ocr_区域找直线(long 参_左上X, long 参_左上Y, long 参_右下X, long 参_右下Y, 禁引用 文本型 参_颜色, 双浮点型 参_相似度) : FindLine
		wstring 局_返回值
		#嵌入行 m_op.FindLine(参_左上X, 参_左上Y, 参_右下X, 参_右下Y, 参_颜色.getPtr(), 参_相似度, 局_返回值);
		返回 (文本型)局_返回值

	//@备注 向某进程写入数据,具体用法可参考大漠插件
	//@参数 窗口句柄，用于指定要在哪个窗口内写入数据
	//@参数 写入数据的地址
	//@参数 写入的数据
	//@参数 写入的数据的大小
	//@返回 0:失败,1:成功
	函数 long 内存_写数据(long 参_窗口句柄, 禁引用 文本型 参_内存地址, 禁引用 文本型 参_欲写入数据, long 参_数据长度) : WriteData
		long 局_返回值 = 0
		#嵌入行 m_op.WriteData(参_窗口句柄,参_内存地址.getPtr(),参_欲写入数据.getPtr(),参_数据长度,&局_返回值);
		返回 局_返回值
	
	//@备注 从某进程读入数据,具体用法可参考大漠插件
	//@参数 窗口句柄，用于指定要在哪个窗口内写入数据
	//@参数 写入数据的地址
	//@参数 写入的数据的大小
	//@返回 读取到的数值
	函数 文本型 内存_写数据(long 参_窗口句柄, 禁引用 文本型 参_内存地址, long 参_数据长度) : ReadData
		wstring 局_返回值
		#嵌入行 m_op.ReadData(参_窗口句柄,参_内存地址.getPtr(),参_数据长度,局_返回值);
		返回 (文本型)局_返回值

	占位















